package cn.com.cfae.iras.doc.analyze.parse.model;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 现金流量表
 */
public class XJLLModel extends BizBaseModel {

    public static String MODEL_NAME = "XJLL";

    /**
     * 经营活动产生的现金流量
     */
    private static String JYHDCSXJLL = "JYHDCSXJLL";
    /**
     * 经营活动现金流入小计
     */
    private static String JYHDXJLR = "JYHDXJLR";
    /**
     * 支付的各项税费
     */
    private static String ZFGXSF = "ZFGXSF";
    /**
     * 支付给职工以及为职工支付的现金
     */
    private static String ZFGZGXJ = "ZFGZGXJ";

    /**
     * 支付其他与经营活动有关的现金
     */
    private static String ZFQTJYHDXJ = "ZFQTJYHDXJ";
    /**
     * 经营活动现金流出小计
     */
    private static String JYHDXJLC = "JYHDXJLC";
    /**
     * 经营活动产生的现金流量净额
     */
    private static String JYHDCSXJLLJE = "JYHDCSXJLLJE";
    /**
     * 投资活动产生的现金流量
     */
    private static String TZHDCSXJLL = "TZHDCSXJLL";
    /**
     * 收回投资收到的现金
     */
    private static String SHTZSDXJ = "SHTZSDXJ";
    /**
     * 取得投资收益收到的现金
     */
    private static String QDTZSYSDXJ = "QDTZSYSDXJ";
    /**
     * 投资活动现金流入小计
     */
    private static String TZHDXJLRXJ = "TZHDXJLR";
    /**
     * 投资活动现金流出小计
     */
    private static String TZHDXJLC = "TZHDXJLCXJ";
    /**
     * 投资活动产生的现金流量净额
     */
    private static String TZHDCSXJLLJE = "TZHDCSXJLLJE";
    /**
     * 筹资活动产生的现金流量
     */
    private static String CZHDCSXJLL = "CZHDCSXJLL";
    /**
     * 筹资活动现金流入小计
     */
    private static String CZHDXJLRXJ = "CZHDXJLRXJ";
    /**
     * 偿还债务支付的现金
     */
    private static String CHZWZFXJ = "CHZWZFXJ";
    /**
     * 分配股利、利润或偿付利息支付的现金
     */
    private static String FPGLLRLXZFXJ = "FPGLLRLXZFXJ";
    /**
     * 支付其他与筹资活动有关的现金
     */
    private static String ZFQTCZHDXJ = "ZFQTCZHDXJ";
    /**
     * 筹资活动现金流出小计
     */
    private static String CZHDXJLCXJ = "CZHDXJLCXJ";
    /**
     * 筹资活动产生的现金流量净额
     */
    private static String CZHDCSXJLLJE = "CZHDCSXJLLJE";
    /**
     * 汇率变动对现金及现金等价物的影响
     */
    private static String HLBDDXJYX = "HLBDDXJYX";

    /**
     * 现金及现金等价物净增加额
     */
    private static String XJDJWJZJE = "XJDJWJZJE";

    /**
     * 加:期初现金及现金等价物余额
     */
    private static String QCXJDJWYE = "QCXJDJWYE";


    /**
     * 加:期末现金及现金等价物余额
     */
    private static String QMXJDJWYE = "QMXJDJWYE";


    private static Map<String, String> items = new HashMap<>();

    static {
//        items.put(JYHDCSXJLL,"经营活动产生的现金流量");
        items.put(JYHDXJLR,"经营活动现金流入小计|营运业务所得现金");
        items.put(ZFGXSF,"支付的各项税费|已付所得税");
        items.put(ZFGZGXJ,"支付给职工以及为职工支付的现金");
        items.put(ZFQTJYHDXJ,"支付其他与经营活动有关的现金");
        items.put(JYHDXJLC,"经营活动现金流出小计|经营活动现金流出");
        items.put(JYHDCSXJLLJE,"经营活动产生的现金流量净额|经营活动产生的现金净流量|经营活动净现金流|营运业务所得现金净额");
//        items.put(TZHDCSXJLL,"投资活动产生的现金流量");
        items.put(SHTZSDXJ,"收回投资收到的现金");
        items.put(QDTZSYSDXJ,"取得投资收益收到的现金");
        items.put(TZHDXJLRXJ,"投资活动现金流入小计|投资活动产生的现金流入小计");
        items.put(TZHDXJLC,"投资活动现金流出小计|投资活动产生的现金流出量|投资活动产生的现金流出小计");
        items.put(TZHDCSXJLLJE,"投资活动产生的现金流量净额|投资活动现金净流量|投资活动现金流净额|投资业务所用现金净额");
//        items.put(CZHDCSXJLL,"筹资活动产生的现金流量");
        items.put(CZHDXJLRXJ,"筹资活动现金流入小计|融资业务所得现金流入小计");
        items.put(CHZWZFXJ,"偿还债务支付的现金");
        items.put(FPGLLRLXZFXJ,"分配股利、利润或偿付利息支付的现金");
        items.put(ZFQTCZHDXJ,"支付其他与筹资活动有关的现金");
        items.put(CZHDXJLCXJ,"筹资活动现金流出小计|融资业务所得现金流出小计");
        items.put(CZHDCSXJLLJE,"筹资活动产生的现金流量净额|筹资活动现金流净额|筹资活动现金净流量|融资业务所得现金净额");
        items.put(HLBDDXJYX,"汇率变动对现金及现金等价物的影响");
        items.put(XJDJWJZJE,"现金及现金等价物净增加额");
        items.put(QCXJDJWYE,"加:期初现金及现金等价物余额");
        items.put(QMXJDJWYE,"加:期末现金及现金等价物余额");

    }

    public static List<ExtractItem> createExtractItemList() {
        List<ExtractItem> extractItemList = new ArrayList<>();
        items.forEach((key, value) -> {
            ExtractItem extractItem = new ExtractItem();
            extractItem.setItemName(key);
            extractItem.setSynonyms(value.split(SYNONYM_SPLIT_CHAR));
            extractItemList.add(extractItem);
        });
        return extractItemList;
    }

}
